// 版权归Go作者所有。版权所有。
// 此源代码的使用受BSD样式的约束
// 可以在许可证文件中找到的许可证。

// Package robustio封装了在Windows上容易出现故障的I/O函数，
// 透明地重试错误直到任意超时。
// None
// 错误是启发式分类的，重试是有界的，因此函数
// 在此包中，不要完全消除虚假错误。然而，他们确实如此
// 大大降低了实践中的失败率。
// None
// 如果是，则错误可能会包含以下内容之一：
// 此软件包中的函数不能完全消除虚假错误，
// 但在实践中大大降低了它们的发生率。
package robustio

// Rename与os.Rename类似，但在Windows上会重试在以下情况下可能发生的错误：
// 同时读取或覆盖文件。
// None
// （见golang.org/issue/31247和golang.org/issue/32188。）
func Rename(oldpath, newpath string) error {
	return rename(oldpath, newpath)
}

// ReadFile与os.ReadFile类似，但在Windows上重试可能导致错误的错误
// 如果同时替换文件，则发生。
// None
// （见golang.org/issue/31247和golang.org/issue/32188。）
func ReadFile(filename string) ([]byte, error) {
	return readFile(filename)
}

// RemoveAll与os.RemoveAll类似，但在Windows上重试可能发生的错误
// 如果最近执行了目录中的可执行文件。
// None
// （见golang.org/issue/19491。）
func RemoveAll(path string) error {
	return removeAll(path)
}

// IsEphemeralError报告err是否是函数所处理的错误之一
// 在这个软件包中，我们试图减轻。
// None
// 认为短暂的错误包括：
// -syscall.ERROR\u访问被拒绝
// -syscall.ERROR\u未找到文件
// -内部/syscall/windows.ERROR\u共享\u冲突
// None
// 这套设备将来可能会扩展；程序不能依赖于
// 任何给定错误的非暂时性。
func IsEphemeralError(err error) bool {
	return isEphemeralError(err)
}
